package com.osce.ex.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.csce.domain.entity.exam.ExQuestinOption;
import com.csce.domain.entity.exam.ExQuestion;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 题目表Mapper接口
 *
 * @author zzx
 * @since 2023-07-31
 */
@Repository
public interface ExQuestionMapper extends BaseMapper<ExQuestion> {

    /**
     * 查询题目表
     *
     * @param id 题目表主键
     * @return 题目表
     */
    ExQuestion selectExQuestionById(Long id);

    List<ExQuestinOption> selectExQuestionOptionsById(@Param("questionId") Long questionId);

    /**
     * 查询题目表列表
     *
     * @param exQuestion 题目表
     * @return 题目表集合
     */
    List<ExQuestion> selectExQuestionList(ExQuestion exQuestion);

    /**
     * 新增题目表
     *
     * @param exQuestion 题目表
     * @return 结果
     */
    int insertExQuestion(ExQuestion exQuestion);

    /**
     * 修改题目表
     *
     * @param exQuestion 题目表
     * @return 结果
     */
    int updateExQuestion(ExQuestion exQuestion);

    /**
     * 删除题目表
     *
     * @param id 题目表主键
     * @return 结果
     */
    int deleteExQuestionById(Long id);

    /**
     * 批量删除题目表
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteExQuestionByIds(Long[] ids);

    /**
     * 批量删除题目选项表
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteExQuestinOptionByQuestionIds(Long[] ids);

    /**
     * 批量新增题目选项表
     *
     * @param exQuestinOptionList 题目选项表列表
     * @return 结果
     */
    int batchExQuestinOption(List<ExQuestinOption> exQuestinOptionList);


    /**
     * 通过题目表主键删除题目选项表信息
     *
     * @param id 题目表ID
     * @return 结果
     */
    int deleteExQuestinOptionByQuestionId(Long id);

    List<Map<Integer, Integer>> getQuestionIdsGroupByTopic();

    Integer selectCountByTopic(@Param("topic") Integer topic);

    List<Long> selectIdsByTopic(@Param("topic") Integer topic);

    List<ExQuestion> selectAll();
}
